package com.mark.web.data.service;

import com.mark.common.ServerResponse;
import com.mark.web.data.entity.vo.CartVo;

import java.util.List;

/**
 * @Description: 购物车Service层接口设计
 * @Author: Mark
 * @CreateDate: 22018/3/27.
 * @Version: 2.0
 * @Copyright : 豆浆油条个人非正式工作室
 */
public interface ICartService {
    /**
     * 查看购物车列表
     * @param userId：当前的用户id
     * @return
     */
    ServerResponse<CartVo> getCartList(Integer userId);

    /**
     * 添加商品到购物车
     * @param userId ：当前的用户id
     * @param productId：当前的商品id
     * @param count：当前的商品数量
     * @return ： 当前的用户的购物车列表信息
     */
    ServerResponse addProductToCart(Integer userId, Integer productId, Integer count);

    /**
     * 更新购物车信息
     * @param userId：当前的用户id
     * @param productId：商品id
     * @param count：商品的数量
     * @return
     */
    ServerResponse<CartVo> updateCart(Integer userId, Integer productId, Integer count);

    /**
     * 移除购物车的商品
     * @param userId：当期的用户id
     * @param productList：商品id列表
     * @return
     */
    ServerResponse<CartVo> deleteProduct(Integer userId, List<String> productList);


    /**
     * 商品的单选，单反选，全选，全反选
     * @param userId：当前的用户id
     * @param productId:商品id（全选和全反选传null）
     * @param checked：选中的状态（1：选中 ；0：未选中）
     * @return
     */
    ServerResponse<CartVo> selectOrUnSelect(Integer userId, Integer productId, Integer checked);

    /**
     * 获取当前用户的购物中商品的数量
     * @param userId：当前的用户id
     * @return ： 购物车中的商品数量
     */
    ServerResponse<Integer> getCartProductCount(Integer userId);
}
